/*
基础数据类型
1. boolean
2. number
3. string
4. null和undefined
5. 数组
6. 元组(Tuple)
7. 枚举(enum)
8. any
9. void
10. object
*/
(function () {
    // 1. boolean
    var isDone = false;
    isDone = true;
    // isDone = 123  // error
    // 2. number
    var age = 23;
    // age = '123'  // error
    // 3. string
    var name = 'tom';
    // name = 23  // error
    var info = "\u6211\u53EB" + name + ", \u4ECA\u5E74" + age;
    // 4. null和undefined   // 都只有一个值
    // null和undefined类型是其它任意类型的子类型
    var n = null;
    var u = undefined;
    name = null;
    name = undefined;
    // 5. 数组
    var arr1 = [12 /* , 'abc' */];
    var arr2 = ['abc' /* , 12 */];
    // 6. 元组(Tuple)  确定了元素个数和类型的数组
    var ts;
    ts = [12, 'abc' /* , true */];
    // 7. 枚举(enum)
    var Color;
    (function (Color) {
        Color[Color["RED"] = 1] = "RED";
        Color[Color["GREEN"] = 2] = "GREEN";
        Color[Color["BLUE"] = 3] = "BLUE";
    })(Color || (Color = {}));
    console.log(Color);
    var myColor = Color.RED;
    console.log(myColor, Color.GREEN, Color[myColor]);
    // 8. any
    var arr3 = [12, true];
    arr3.push('abc');
    // 9. void   代表函数没有返回值
    function fn() {
        // return 12  // error
        // return undefined
        // return null
        // return 'abc'  // error
    }
    // 10. object 
    function fn2() {
        return {};
        // return () => {}
        // return []
        // return null
        // return undefined
        // return 123 // error
    }
})();
/*
强类型的好处:
  正确语法的提示补全
  错误语法的错误提示
*/ 
